package com.sse.conexion;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;

import com.sse.VO.PoliticaVO;
import com.sse.VO.SensorVO;

/**
 * Clase que se encarga de gestionar la persistencia de la entidad Politicas
 * 
 * @author Carlos Ramirez
 * 
 */
public class ManejadorPoliticas {

	public static ArrayList<PoliticaVO> obtenerPoliticas() throws Exception {
		ArrayList<PoliticaVO> lPoliticas = new ArrayList<PoliticaVO>();

		Connection con = ConectorBD.getConexion();
		Statement sqlStatement = con.createStatement();
		ResultSet rs = null;

		rs = sqlStatement.executeQuery("select * from politicas");

		while (rs.next()) {

			PoliticaVO voPolitica = new PoliticaVO();

			voPolitica.setCodigoInmueble(rs.getInt("codinmueble"));
			voPolitica.setCodigoSensor(rs.getInt("codsensor"));
			voPolitica.setCodigoEvento(rs.getInt("codevento"));
			voPolitica.setCodigoTagId(rs.getInt("codtagid"));
			voPolitica.setDiaSemana(rs.getInt("diasemana"));
			voPolitica.setHoraMin(rs.getInt("horamin"));
			voPolitica.setHoraMax(rs.getInt("horamax"));
			voPolitica.setMinutoMin(rs.getInt("minmin"));
			voPolitica.setMinutoMax(rs.getInt("minmax"));
			voPolitica.setTipoSensor(rs.getInt("tiposensor"));

			lPoliticas.add(voPolitica);

		}
		rs.close();
		sqlStatement.close();
		con.close();

		return lPoliticas;
	}

	public static int ingresoPolitica(PoliticaVO politica) throws Exception {
		Connection con = ConectorBD.getConexion();
		Statement sqlStatement = con.createStatement();

		String strSql = "INSERT INTO politicas(" + "codinmueble,"
				+ "codsensor," + "codevento," + "codtagid," + "diasemana,"
				+ "horamin," + "minmin," + "horamax," + "minmax,"
				+ "tiposensor" + ")VALUES (" + politica.getCodigoInmueble()
				+ "," + politica.getCodigoSensor() + ","
				+ politica.getCodigoEvento() + "," + politica.getCodigoTagId()
				+ "," + politica.getDiaSemana() + "," + politica.getHoraMin()
				+ "," + politica.getMinutoMin() + "," + politica.getHoraMax()
				+ "," + politica.getMinutoMax() + ","
				+ politica.getTipoSensor() + ")";

		int resultado = sqlStatement.executeUpdate(strSql);

		con.close();

		return resultado;
	}

	public static void main(String[] args) throws Exception {
		ArrayList<SensorVO> lSensorVO = ManejadorSensor.obtenerSensores();

		for (SensorVO sensorVO : lSensorVO) {
			PoliticaVO vo = new PoliticaVO();
			Calendar c = new GregorianCalendar();
			vo.setCodigoInmueble(sensorVO.getCasaIdentificador());
			vo.setCodigoSensor(sensorVO.getIdentificador());
			vo.setTipoSensor(sensorVO.getTipoSensor());
			vo.setCodigoEvento(1);
			vo.setCodigoTagId(sensorVO.getRfId());
			vo.setDiaSemana(c.get(Calendar.DAY_OF_WEEK));
			vo.setHoraMin(0);
			vo.setHoraMax(24);
			vo.setMinutoMin(0);
			vo.setMinutoMax(59);

			ManejadorPoliticas.ingresoPolitica(vo);
		}

		ArrayList<PoliticaVO> lPoliticas = ManejadorPoliticas
				.obtenerPoliticas();
		System.out.println(lPoliticas.size());

		// for (PoliticaVO politicaVO : lPoliticas) {
		// System.out
		// .println("Codigo Evento: " + politicaVO.getCodigoEvento());
		// }
	}

}
